// 枚举定义了一系列常量值
// 默认情况下第一个枚举值为1，后面的值依次递增
// 可以给枚举值设置初始值，设置值后续的元素也会依次递增


enum Direction {
    Up,
    Down,
    Left = 10,
    Right
}

console.log(Direction.Up) // 0
console.log(Direction.Down) // 1
console.log(Direction.Left) // 10
console.log(Direction.Right) // 11
console.log(Direction[0]) // Up


// 如果初始化了非 number 类型的值，其他值也必须使用相同类型初始化
// 使用常量枚举，可以提升性能，此时 enum 不会编译成 js 代码
const enum Direction1 {
    Up = 'Up',
    Down = 'Down',
    Left = 'Left',
    Right = 'Right'
}

const value = 'Up'
if(value === Direction1.Up){
    console.log('go up!')
}